package com.Akxymcp.hta.command;

import java.util.ArrayList;
import java.util.List;

import org.bukkit.command.CommandSender;

public class ValuePath extends ComPath{

	/**获取数据源的方法,默认返回无数据*/
	TabComSource sourceGetor = (sd)->null;
	
	/**该值型节点是否处理无限量参数,如定义lore时无视空格*/
	boolean isValues = false;
	
	/**创建节点>名称*/
	public ValuePath(String name)
	{
		super(name);
	}
	/**创建节点>名称,父节点*/
	public ValuePath(String name,ComPath suppath) 
	{
		super(name,suppath);
	}
	
	/**创建节点>名称,父节点,执行函数*/
	public ValuePath(String name,ComPath suppath,ComFun function) 
	{
		super(name, suppath, function);
	}
	
	/**创建节点>名称,父节点,执行函数(返回boolean),数据源获取函数(返回list),
	 * 若数据源为玩家名,则可以不设定数据源,改用3参数的构造方法
	 * */
	public ValuePath(String name, ComPath suppath, ComFun function,TabComSource getor) 
	{
		super(name, suppath, function);
		sourceGetor = getor;
	}
	
	/**补全指令>执行者,需要补全的部分*/
	public List<String> complete(CommandSender sd,String arg)
	{
		List<String> sl = sourceGetor.getSource(sd);
		//获取数据源
		
		if(arg==null)
		return sl;
		
		if(sl==null)
		return null;
		
		List<String> list = new ArrayList<String>();
		for(String str:sl)
		{//筛选
			if(str.toLowerCase().startsWith(arg.toLowerCase()))
			{
				list.add(str);
			}
		}
		return list;
	}

	
	/**获取>获取数据源的方法*/
	public TabComSource getSourceGetor() {
		return sourceGetor;
	}
	
	/**设定>获取数据源的方法*/

	public ValuePath setSourceGetor(TabComSource sourceGetor) {
		this.sourceGetor = sourceGetor;
		return this;
	}
	
	/**该值型节点是否处理无限量参数,如定义lore时无视空格*/
	public boolean isValues() {
		return isValues;
	}
	/**设置该值型节点是否处理无限量参数,如定义lore时无视空格*/
	public ValuePath setValues(boolean isValues) {
		this.isValues = isValues;
		return this;
	}

	
}
